package com.easy.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.AlipayConfig;
import com.alipay.api.diagnosis.DiagnosisUtils;
import com.alipay.api.domain.AlipayTradePrecreateModel;
import com.alipay.api.domain.ExtendParams;
import com.alipay.api.response.AlipayTradePrecreateResponse;
import com.alipay.api.domain.GoodsDetail;
import com.alipay.api.domain.BusinessParams;
import com.alipay.api.request.AlipayTradePrecreateRequest;

import com.alipay.api.FileItem;
import com.easy.bean.Orders;

import java.util.Base64;
import java.util.ArrayList;
import java.util.List;

public class PaymentUtil {


//    public static void main1(String[] args) throws AlipayApiException {
//        String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCtt4zbNWinILU9PkfNpGwg0PALbmkZaNnsI6eYK4XbY6wxn3NPqfGgg3NYwErpslfDNEifGREoFx0GiA1D/IvRqGSSj/S+yHqNvO+7wBqgi5w6T8hQKkiSItgz9IS5rmAWfHL5GlT2Ao+DKalQJ+J4qGDNNeepZdcmnKMPc/B+NbQ8F8/apjG0jZPhDn7VmbUTcotGVWb+X/zsn+6xrx/U3ANyAfMkTib52V5ARlCKXEx5NWqEs5vBOCRQnzf0McC6xHR3XLLnYWbU9GtLb+4Ff8GTMXT5Dl4n/nOsfMx6Emg+lII9arppwjOUG7CHdUKTHEs7l7sr0llkSOnMQpYHAgMBAAECggEBAKWmqBzIezkTiYATCalhJvLMCnr8GCBwyY3SGhiTOBuSmjrfj7fhmFW1w6JYC5d5xxKPosiDwMZ38+esiOnRwwp0ByNzPrFGvwa1qe1hLIL3XkyEk8FN8NHZhE1W19GwJFSM6536rBXDL1KlwZx7zAu+lEBbLMNuJ5HcP+mWZzgRLvXUCyxf4cJuOZwX6MhunXDaAnNlB6i8HT+OI0yTvhvQYm33U0EHRnwf3fDIaR7XSW4zznT7uE5OlLQcsnOxed3sP0MhYxfcUGzwzRKDMHVy76aBMJlVLEnZi/I2pv+mtRrEFEMfXx+xNgcXdWf3uAkk5gTez0zslCHpxmMzHRECgYEA4SpQpTLnQ9sbIcT/LuEK+UFTBCdhJCJw9cAa3UX3Qfc569wH/8/eaOkp9fFhmAvOtBl4Ijzw+TyXQCCT/82VB4il/fzbvwf8we9xIAyG1PKKNhZp69TY5FXAlONjbRRiffnxQRN4sNvM+V6jY6qLYwkkJ4bynnKk11ohZS7DQzMCgYEAxYGY48DPuUiAFikhGGPy+ytrKIVwmUkpLjSoYjcRLn4nBONyx+owtYn4Qefqt9u+j/hj+FcONUAy3cUW5mKd0JrjTD9My+MAGeBOMDAShEYoilvuXXBgzx7P6FKrgJ4i/OaSTKlejtavFPaVjf1ggTY8NWUSv1Og8KPopTXYId0CgYBJSI5q1gBzE1LnUMiFJ3V83of4aCCztAnz0gxsTCNHcwGFBF4OIkeO+aRQiblr1Rv3ffqdmhwL4m6PzoqczPpeM1ljKvMSX7UiIZ4+AhW4JSBarjzXJrVYy5gcXU206NeNjNW6im3TkhZKa0TeYVlwaD8+Jiu86i9Ab/NCjU+8BQKBgHMDaRkX6t8mzRAam18stQ521kweiNd6tzRlDblEAAlnBSnfmbO5OOw+kAcxGoo+uNX1+6FecLOp0vU6FH/M5cHYsIxyQDJq2mA3MtD07ZOBl5IavtBC5N04QDI2EhEwBYfobUGfT6U2d3ZpseWhq1UTVDRzy1sHRC1eBdhPZrExAoGAWAtXRCGJNg5Io9r8VpnMn7tYFLF4IzF+vYhoUrOf8Ijn9ERXAPhtRItvJmhO9J9YzSQ/9DfiMbMn/v+fLW+by7QwrHiY8eIdJPgiKPcnKOLey1+SOXe2FmouD+NFgxjR5vPyOgT1Lw5vpR9naqFdLzFzZttEWzKa29Che9gbMbs=";
//        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9xSpVNvnEDMNIt4aIArSByOsYpgmpOJhwr3kVvBJkrcErW1cY26APjBGOxFj5Ng1TuBatl1W72p++h0Q6gPPp2le2kulqapdqYnPpIRFHM712Y9er3ksB3NMNnxGCXjGUSMdVWU9FI9ogBXTJxM3XIhCIidrbTofNIJ3WVmTc5ZyiICu19Fq3vW37KwGahLJgWQD+YU8IQfVwA2TzR6AplsIKgSXlTOO5mV9BCLcsHAUd1cLUSospCJPYMyphjfd3ZIgUrv/WgCCfF8rMjenp1HFe7sFyc3hZyaw66wAFPX1aPRB/h6VomglsLM4uUsimvcw1fFdU2J3Ovva3GB7hwIDAQAB";
//        AlipayConfig alipayConfig = new AlipayConfig();
//        alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");
//        alipayConfig.setAppId("9021000140673885");
//        alipayConfig.setPrivateKey(privateKey);
//        alipayConfig.setFormat("json");
//        alipayConfig.setAlipayPublicKey(alipayPublicKey);
//        alipayConfig.setCharset("UTF-8");
//        alipayConfig.setSignType("RSA2");
//        AlipayClient alipayClient = new DefaultAlipayClient(alipayConfig);
//        AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
//        AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
//        model.setOutTradeNo("20150320010101001");
//        model.setTotalAmount("88.88");
//        model.setSubject("Iphone6 16G");
//        request.setBizModel(model);
//        AlipayTradePrecreateResponse response = alipayClient.execute(request);
//        System.out.println(response.getBody());
//        if (response.isSuccess()) {
//            System.out.println("调用成功");
//        } else {
//            System.out.println("调用失败");
//            // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
//            // String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
//            // System.out.println(diagnosisUrl);
//        }
//    }

    public static String payment(Orders order) throws AlipayApiException {


        // 初始化SDK
        AlipayClient alipayClient = new DefaultAlipayClient(getAlipayConfig());

        // 构造请求参数以调用接口
        AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
        AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();

//            // 设置商户订单号
        model.setOutTradeNo(order.getCode());
//
//            // 设置订单总金额
        model.setTotalAmount(order.getPayment().toString());
//
//            // 设置订单标题
        model.setSubject("Toyqo儿童玩具商城");
//
//            // 设置产品码
        model.setProductCode("FACE_TO_FACE_PAYMENT");

        // 设置卖家支付宝用户ID
        model.setSellerId("2088721061066023");

//        // 设置订单附加信息
//        model.setBody("Iphone6 16G");
//
//            // 设置订单包含的商品列表信息
//            List<GoodsDetail> goodsDetail = new ArrayList<GoodsDetail>();
//            GoodsDetail goodsDetail0 = new GoodsDetail();
//            goodsDetail0.setGoodsName("ipad");
//            goodsDetail0.setQuantity(1L);
//            goodsDetail0.setPrice("2000");
//            goodsDetail0.setGoodsId("apple-01");
//            goodsDetail0.setGoodsCategory("34543238");
//            goodsDetail0.setCategoriesTree("124868003|126232002|126252004");
//            goodsDetail0.setShowUrl("http://www.alipay.com/xxx.jpg");
//            goodsDetail.add(goodsDetail0);
//            model.setGoodsDetail(goodsDetail);

//            // 设置业务扩展参数
//            ExtendParams extendParams = new ExtendParams();
//            extendParams.setSysServiceProviderId("2088511833207846");
//            model.setExtendParams(extendParams);

        // 设置商户传入业务信息
//            BusinessParams businessParams = new BusinessParams();
//            businessParams.setMcCreateTradeIp("127.0.0.1");
//            model.setBusinessParams(businessParams);

//        // 设置可打折金额
//        model.setDiscountableAmount("80.00");
//
//        // 设置商户门店编号
//        model.setStoreId("NJ_001");
//
//        // 设置商户操作员编号
//        model.setOperatorId("yx_001");
//
//        // 设置商户机具终端编号
//        model.setTerminalId("NJ_T_001");
//
//        // 设置商户的原始订单号
//        model.setMerchantOrderNo("20161008001");

        request.setBizModel(model);
        request.setNotifyUrl("http://344e9213.r12.cpolar.top/orders/paysuccess");
        // 第三方代调用模式下请设置app_auth_token
        // request.putOtherTextParam("app_auth_token", "<-- 请填写应用授权令牌 -->");

        AlipayTradePrecreateResponse response = alipayClient.execute(request);
        System.out.println(response);
        System.out.println(response.getBody());


        if (response.isSuccess()) {
            String body= response.getBody();
            JSONObject obj=JSON.parseObject(body);
            obj=obj.getJSONObject("alipay_trade_precreate_response");
            String qr_code=obj.getString("qr_code");
            System.out.println("调用成功");
            return qr_code;
        } else {
            System.out.println("调用失败");
            // sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
            String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
            System.out.println(diagnosisUrl);
            return null;
        }
    }

    private static AlipayConfig getAlipayConfig() {
        String privateKey  = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDjchdOVelfdgxVNA0niJaUOsgIvQRy5DIqhw7iVqOEUBPTroSewaAPZmTIRpXun9KhesvObkodtmLUYMvCVGREZ4rg9qAf02OERtmnowgPoawdyun6uTTCXtyZAjkcv8Gvf9C1/WFzNSNjyZYM2dwl4NibKG4LPwY6ttwdcBVppihQETA0MR1m/PxB/zeE0J/UR8ZHgLt4Mhc6HwucZqaaqq32icqYs8L6SG6VhvugOxXO9974TzL+QiqO27ryKEad4klI0kWirKHxo5fX0m1onOJZQ3PSCn7X2Hq/dxk5Zhw7as2SDsFEDdViQjeSUfR9F6gDugUOtUV+baMbElu/AgMBAAECggEARdYzV8dDWB9sHAFWhKwI6EzAPQakxg5RZQOBS3gkzyyzWcz9Ra3YUsIy8dfSk6mZSCHnUGRG96aX4/QwvGOjQem1F+xCMGN87BHBJRsHD52ptqAmhei2TXRJMeYf2Tb75sJNOIQrlu9bBXnRS/LdCPhoKgQY/fUFGaQqJBPVT1G0JbwmQhrgLbVgOaSTOO9rDHcCwyrXsvhsROCmcqLGFlU+WrECUV8w4KeuGleKhQEzMeFDQXvrFQmvXH8A98LUrbf4NeIHJP7V57RWV6fsc8gtXALYjwoYtrikyIB7sTo2Ao1sKObMw7kQa0qMXV+PYYszNgVrBFKlavv7zYLTuQKBgQD/SZbk4YU0WSUKOq4hFLX581iK1dxsP25K5MYXrU2zlzQUa87Ua6k5xY+marHyv3zCFUk3NMPGOmJGv/ejaOzJTGDIcq6/IC7Abxziy1rFnb9Gr8Anwx+vz+LMGduI99/PYbt7x1ZxXLk2knddCdekG6MKJXOIM15A/swo+sBiQwKBgQDkFJuZkj2O5nZvGJHrYYePJXdDWsXsC5abgOHiwYZ5dKuGui2In78uije5A/I+3/VSGI4ph26dl4EIBlPpCoAxtLo0fry7tjs7nHm6/WbFtH4npmf56lIznJVfP6BrtcO7BhdMUUDLoPs8RvHgK3uQWClIEeRqSUxirrV6dqRe1QKBgQDbozO4zjLtm/jbOStReOEsIGrAYElZtKUuuG+aNVeRuPhszWhQqCQbeVcjJc7d/FPZI7kvTy1U4ixllIn5xK9cbWMjck/YTlcK504h7jW1qgfESDd5vk4H1ELbuS+BQ0oCwaItV46Oz+jmA9PAb1RhdAmtFBW3TAK+xrleVIaqwwKBgGoymjzIVfdaoZya8R6LG+ZwCHcJJg0BXE/tk7/UYjvdMhyaRadO0mLmIon4J2xVNVHTcyYtFDk2mPLWl21z4TrDrsvQkypH8I6SDjAd2yOFJhRqLBG2pC254+ckphpg2NEVRfXYA3aM704irm61cGRGWHphMly24mU0efWalnA9AoGASV9KUxzCEATYRtpUZ/vfbHxJZB8qcK4dMW/u7azHCz7mP6trBGl3PPHEfNFHeJGHWb4aDFAIfSVpYSXwVXRM0N6DjFUtz+t5XLCUz5XBS074iDjCVciPFYCuLK3/OStJa2znfVv4F6r5iR2ZDZlKf1yNLe6SE4L4wPlvoMpPRu0=";
        String alipayPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApiUB9MirIj74bbjOXiFpdQo9cQzqOyh9PghFG8ZnAaydpXvn1xSIP/QgfsnaJs2QMW0/LW90vZzV5qwY28eUmk78fqlCGAVmEpc2TcmwzdJh6hid6hGsZxoggxtQGc2TBWwxo+IEIICArwfiT2KrHOTpZLPnsTSEGSCwKev3S0qGlkN/fvQlCqEliCGfT8GA2pLERRg5Q2coUedUZB6vaUHPh00llwOTDFcn9Trfa1EptkOH2e06mABkkaHM8WQsj4qkuaDnb03XyVuN6C0gqWwZjVZ2Bw2BISzXH0Oy2tVHEZj+dYpCuvH3A9uCanKIToZLZaiTSkOg34XHxyh/fwIDAQAB";
        AlipayConfig alipayConfig = new AlipayConfig();
        alipayConfig.setServerUrl("https://openapi-sandbox.dl.alipaydev.com/gateway.do");
        alipayConfig.setAppId("9021000146601355");
        alipayConfig.setPrivateKey(privateKey);
        alipayConfig.setFormat("json");
        alipayConfig.setAlipayPublicKey(alipayPublicKey);
        alipayConfig.setCharset("UTF-8");
        alipayConfig.setSignType("RSA2");
        return alipayConfig;
    }
}

